{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pwlf\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(123)\n",
    "n = 100\n",
    "n_data_sets = 100\n",
    "n_segments = 6\n",
    "# generate sine data\n",
    "x = np.linspace(0, 10, n)\n",
    "y = np.zeros((n_data_sets, n))\n",
    "for i in range(n_data_sets):\n",
    "    y[i] = np.sin(x * np.pi / 2)\n",
    "    # add noise to the data\n",
    "    y[i] = np.random.normal(0, 0.05, 100) + y[i]\n",
    "X = np.tile(x, n_data_sets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot all of the data\n",
    "plt.figure()\n",
    "plt.plot(X.flatten(), y.flatten(), '.')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.        ,  1.05164435,  2.98570544,  5.00010778,  7.01335991,\n",
       "        8.94940776, 10.        ])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# perform a single fit to all of the data\n",
    "my_pwlf_global = pwlf.PiecewiseLinFit(X.flatten(), y.flatten())\n",
    "my_pwlf_global.fit(n_segments)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot all of the data with global fit\n",
    "yhat = my_pwlf_global.predict(x)\n",
    "plt.figure()\n",
    "plt.plot(X.flatten(), y.flatten(), '.')\n",
    "plt.plot(x, yhat, '-')\n",
    "plt.plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# for each data set, fit a pwlf model using the global breaks\n",
    "my_pwlf_models = []\n",
    "slopes = []\n",
    "for i in range(n_data_sets):\n",
    "    temp_pwlf = pwlf.PiecewiseLinFit(x, y[i])\n",
    "    temp_pwlf.fit_with_breaks(my_pwlf_global.fit_breaks)\n",
    "    my_pwlf_models.append(temp_pwlf)\n",
    "    slopes.append(temp_pwlf.slopes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 1.01504066 -1.24340053  1.2084571  -1.21045573  1.24507127 -1.02114751]\n",
      "[ 1.01504066 -1.24340053  1.2084571  -1.21045573  1.24507127 -1.02114751]\n",
      "[0.03299628 0.01432216 0.01273798 0.01173331 0.01313007 0.03130695]\n"
     ]
    }
   ],
   "source": [
    "slopes = np.array(slopes)\n",
    "print(my_pwlf_global.slopes)\n",
    "print(slopes.mean(axis=0))\n",
    "print(slopes.std(axis=0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
